package com.lga.gc.jvm;

import java.io.IOException;
import java.io.InputStream;

public class ClassLoderTest extends ClassLoader {
    @Override
    public Class<?> loadClass(String name) throws ClassNotFoundException {
        try {
            String fileName = name.substring(name.lastIndexOf(".") + 1) + ".class";
            InputStream is = getClass().getResourceAsStream(fileName);
            if (is == null) {
                return super.loadClass(name);
            }
            byte[] b = new byte[is.available()];
            is.read(b);
            return defineClass(name, b, 0, b.length);
        } catch (IOException e) {
            throw new ClassNotFoundException(name);
        }
    }

    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        ClassLoderTest classLoderTest = new ClassLoderTest();
        Object obj = classLoderTest.loadClass("com.lga.gc.jvm.ClassLoderTest").newInstance();
        System.out.println(obj.getClass());
        System.out.println(obj instanceof ClassLoderTest);

    }
}
